package pers.xiaojun.boot.module.system.service.dept;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import pers.xiaojun.boot.module.system.controller.dept.vo.post.PostQueryReqVO;
import pers.xiaojun.boot.module.system.controller.dept.vo.post.PostSaveReqVO;
import pers.xiaojun.boot.module.system.dao.entity.dept.PostDO;

import java.util.Collection;


/**
 * 岗位服务层
 *
 * @author xiaojun
 * @since 2025-11-02
 */
public interface PostService extends IService<PostDO> {


    /**
     * 创建岗位
     *
     * @param saveVO 创建岗位信息
     * @return 岗位
     */
    PostDO savePost(PostSaveReqVO saveVO);

    /**
     * 更新岗位信息
     *
     * @param updateVO 更新岗位信息
     * @return 岗位
     */
    PostDO updatePost(PostSaveReqVO updateVO);

    /**
     * 根据岗位Id删除岗位
     *
     * @param postId 岗位Id
     */
    void removePostById(Long postId);

    /**
     * 根据岗位Id删除一批岗位
     *
     * @param postIds 岗位Id集合
     */
    void removePostByIds(Collection<Long> postIds);

    /**
     * 根据岗位Id获取岗位
     *
     * @param postId 岗位Id
     * @return 岗位
     */
    PostDO getPostById(Long postId);

    /**
     * 分页/条件查询
     *
     * @param queryVO 查询条件
     * @return 分页数据
     */
    Page<PostDO> listPostsPage(PostQueryReqVO queryVO);

    /**
     * 校验岗位是否存在
     *
     * @param postId 岗位Id
     * @return 岗位
     */
    PostDO validatePostExists(Long postId);

}
